In many modern computing systems (including desktop, laptop, notebook, netbook, tablet and smartphone computing systems), concurrent execution of multiple processes has become more and more of a mainstream runtime environment. A process is the execution of a sequence of code to accomplish a particular task. Concurrent execution of multiple processes is the concurrent execution of multiple sequences of code during the same period of time to accomplish multiple tasks corresponding to each process.
In the case of computer application programs, application developers may wish to utilize multiple processes for their particular application. However, writing application software for a multi-process environment presents several challenges. One issue pertains to inter-process communication. In certain cases, for example, applications may be designed to take advantage of services provided by other applications or by an operating system running on a computing device. These services may be a set of computer implemented instructions designed to implement a specific function or perform a designated task. An application may call (e.g., make use of) one or more of these services to avoid redundant software code for commonly performed operations.
In certain inter-process communication environments, all available services may be found in a global namespace, where each service is identified by a unique name or other identifier. Thus, all applications in the computing system have access to all of the available services. Here, the calling of a particular service is likely to be a function of a particular “state” of the application (e.g., the values of the application's variables). It is possible that, because of the application's state, some services have little or no likelihood of being called by the application. Thus, it is probable that the some of the services will be unnecessarily instantiated in memory. In addition, there are security risks associated with allowing an application indiscriminate access to all services available in a computing system. Furthermore, an application that publishes a service does not have the ability to restrict what other applications are allowed to access the service.